}
}
+static void
+translate_coordinates (GdkEvent *event,
+ GtkWidget *widget)
+{
+ GtkWidget *event_widget;
+ gdouble xd, yd;
+ gint x, y;
+
+ if (!gdk_event_get_coords (event, &xd, &yd))
+ return;
+ event_widget = gtk_get_event_widget (event);
+
+ /* FIXME: loses precision */
+ x = xd;
+ y = yd;
+ gtk_widget_translate_coordinates (event_widget, widget,
+ x, y, &x, &y);
+ gdk_event_set_coords (event, x, y);
+}
+
static gint
gtk_widget_event_internal (GtkWidget *widget,
GdkEvent *event)
return TRUE;
g_object_ref (widget);
+ translate_coordinates (event_copy, widget);
if (widget == gtk_get_event_widget (event))
return_val |= _gtk_widget_run_controllers (widget, event, GTK_PHASE_TARGET);